/**
 * Description:
 * Date: 2025-09-23
 * Time: 22:19
 */
public class Test {

    public static void main(String[] args) {
        //整形 int 转换为 字符串string
        int a = 10;
        String s1 = a + "";//遇到字符串括号 “” 时， 会自动转换为字符串
        String s2 = String.valueOf(a);//使用库方法进行转换
        System.out.println(s1);
        System.out.println(s2);

        //字符串转换为整形
        String str1 = "123";
        int num = Integer.valueOf(str1);//使用库方法进行转换
        System.out.println(num);

    }

    public static void main13(String[] args) {
        //字符串
        String str1 = "hello";
        String str2 = "world";
        System.out.println(str1);
        System.out.println(str2);
        //字符串拼接 使用 ‘ + ’ 进行拼接
        System.out.println(str1 + str2);
    }

    public static void main12(String[] args) {
        byte a = 10;
        byte b = 20;
        //小于4个字节的数据  在参与运算时 会先提升为4个字节再参加运算
        //故需要进行强转 或者 用int类型来接受
        byte c = (byte)(a + b);
        int d = a + b;
        System.out.println(c);
        System.out.println(d);
    }

    public static void main11(String[] args) {
        byte a = 127;
        long b = 1333L;
        b = a;//byte --> long 数据范围由小到大，隐式转换 自动将byte类型提升为long后赋值
        a = (byte)b;// long -->数据范围由大到小，需要进行强转，同时数据精度可能会发生丢失

        boolean c = true;
        //a = c;数据类型不兼容，报错

        byte d = 127;//编译通过，赋值大小没有超过byte的范围，编译器隐式将127转化为byte类型 （java中整形默认为int）
        //byte e = 333;编译失败，赋值代销超过byte的范围，有数据丢失

    }

    public static void main10(String[] args) {
        //类型转换
        byte a = 10;
        int b = 200;
        //b = a;
        //a 正常赋值给 b 没有问题，是小范围放到大范围中
        //当 b 赋值给 a 时，时小范围给小范围，若b的值超过变量a所能容纳的最大值，会报错，强转也不行
        a = (byte)b;
        System.out.println(a + "" + b);
    }

    public static void main9(String[] args) {
        //短整形 short 2个字节 16个比特位
        short a = 3;
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
    }

    public static void main8(String[] args) {
        //布尔类型 boolean 没有明确规定占多少字节 但在Oracle公司中，占1个字节

        //boolean类型的变量只有两种取值 ： true(真)  false(假)
        boolean a = true;
//        System.out.println(a + 1);boolean 不能与 int 类型转换，不存在true表示1 false表示0的说法
    }

    public static void main7(String[] args) {
        //字符型变量 char 2个字节
        char a = 'A';
        char b = '1';
        System.out.println(a);
        System.out.println(b);

        //能放文字（整形）
        char c = '型';//文字是占两个字节空间的，所以一个字符变量只能放一个文字，再放系统会报错
        System.out.println(c);
    }

    public static void main6(String[] args) {
        //单精度浮点型 float 4个字节
        float f = 12.1f;//小数默认是double类型，所以一般会在后面加字母f来确定是float类型
    }

    public static void main5(String[] args) {
        //双精度浮点型 double 8个字节
        double a = 12.4;//一般情况下，系统默认浮点数是double类型
        System.out.println(a * a);//小数是不能精确表示每一位的，只能说精确表示 小数点后几位
    }

    public static void main4(String[] args) {
        //长整型 long 8个字节 64位比特位
        long a = 120L;//使用长整型时一般再值后面加个大写L进行标注
        System.out.println(Long.MAX_VALUE);//2^63 - 1
        System.out.println(Long.MIN_VALUE);//-2^63
    }

    public static void main3(String[] args) {
        // 字节型 byte 1个字节  8个比特位 第一位是符号位，剩下的7位比特位才是数值存储的大小
        byte a = 127;
        System.out.println(Byte.MAX_VALUE);//2^7 - 1
        System.out.println(Byte.MIN_VALUE);//-2^7
    }

    public static void main2(String[] args) {
        //整型：int 4个字节 32个比特位
        int a = 10;
        //最大值 2^31 - 1
        System.out.println(Integer.MAX_VALUE);
        //最小值 -2^31
        System.out.println(Integer.MIN_VALUE);

    }


    public static void main1(String[] args) {
        //被final修饰的变量叫 常量 ，不能再进行修改
        final int a = 10;
//        a = 4;
        System.out.println(a);
    }
}
